#ifndef __UPDATE_VIP_H__
#define __UPDATE_VIP_H__

#include <stdint.h>

#define APP_PATH	"./VucApp.S"
#define SWL_PATH	"./VucSwl.S"
#define PATH_LEN	128

#define UPDATE_DEV  			"/dev/ipcl_update"
#define UPDATE_RATE_DEV			"/sys/class/misc/ipcl_update/vip_percent"
#define UPDATE_RECV_BUF_LEN		1024
#define UPDATE_SEND_BUF_LEN		1024

struct update_info {
	int32_t update_fd;
	int32_t update_rate_fd;
	uint16_t data_frame_num;
	uint16_t data_index;
	/* recv_buf */
	uint8_t *buf;
	uint8_t update_rate;
	uint8_t recv_flag;
};

typedef enum {
	UPDATE_HOST_REQ_NONE,
	UPDATE_HOST_REQ_UPDATE_READY,
	UPDATE_HOST_REQ_SEND_DATA,
	UPDATE_HOST_REQ_CHECK_CS,
} UPDATE_HOST_REQUEST_T;

typedef enum {
	UPDATE_VIP_RESP_NONE,
	UPDATE_VIP_RESP_UPDATE_READY,
	UPDATE_VIP_RESP_SEND_DATA,
	UPDATE_VIP_RESP_CHECK_CS,
} UPDATE_VIP_RESPOND_T;

typedef enum {
	UPDATE_APP_PHASE,
	UPDATE_SWL_PHASE,
	UPDATE_PHASE_MAX=UPDATE_SWL_PHASE,
} UPDATE_PHASE_T;

typedef enum {
	UPDATE_STATUS_SUCCESS=0x60,
	UPDATE_STATUS_FAIL=0x63,
	UPDATE_STATUS_ERASE_FLASH_FAIL=0x68,
	UPDATE_STATUS_NO_MEM=0x6B,
} UPDATE_STATUS_T;

/* for compile */
enum {
	PWR_HOST_REQ_REBOOT_SWL=0x07,
	PWR_HOST_REQ_REBOOT_APP,
};

#endif /* __UPDATE_VIP_H__ */
